package com.jy.wms.service;

import com.jy.wms.common.UUIDUtils;
import com.jy.wms.common.annotions.BaseServiceDescribe;
import com.jy.wms.common.base.BaseService;
import com.jy.wms.common.base.ServiceException;
import com.jy.wms.pojo.WmsGoods;
import com.jy.wms.pojo.WmsGoodsBom;
import com.jy.wms.dao.WmsGoodsBomMapper;
import net.sf.json.JSONArray;
import org.springframework.stereotype.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;
import java.util.jar.JarEntry;

/**
    * @ClassName: WmsGoodsBomService.java
    * @Description: TODO(这里用一句话描述这个类的作用)
    * @Author Jane
    * @Date Wed Dec 27 17:07:41 CST 2017
    */

    @Service
    public class WmsGoodsBomService extends BaseService<WmsGoodsBomMapper,WmsGoodsBom> {

     /**
     * 插入一条记录——Jane
     * @param map 实体集合
     * @return int
     */
     @BaseServiceDescribe(moduleName = "插入货品物料清单信息",btnName = "插入货品物料清单信息")
     @Transactional
    public void baseInsert(Map<String,Object> map){
        if(map.containsKey("hpid")&&map.containsKey("wmsGoodsBom")){
            WmsGoodsBom bom=null;
            List<Map<String,Object>> goodsBoms= JSONArray.fromObject(map.get("wmsGoodsBom"));//获取新增的货品物料清单集合
            for(Map<String,Object> goodsBom:goodsBoms){
                bom=new WmsGoodsBom();
                bom.setId(UUIDUtils.uuid());
                bom.setHpid(goodsBom.get("hpid").toString());
                bom.setSshpid(map.get("hpid").toString());
                bom.setSl(Double.parseDouble(goodsBom.get("sl").toString()));
                dao.baseInsert(bom);
            }
        }
    }

   /**
    * 插入一条记录（匹配有值的字段）
    * @param entity 实体对象
    * @return int
    */
    public Integer baseInsertSelective( WmsGoodsBom entity){
         return dao.baseInsertSelective( entity);
    }

   /**
    * 删除（根据主键ID删除）
    * @param id 主键
    * @return int
    */
    public Integer baseDeleteByPrimaryKey( String id){
         return dao.baseDeleteByPrimaryKey( id);
    }

   /**
    * 删除（根据ID 批量删除）
    * @param idList 主键ID列表
    * @return int
    */
    public Integer baseDeleteBathPrimaryKeys( List<String> idList){
         return dao.baseDeleteBathPrimaryKeys( idList );
    }

    /**
    * 分页查询
    * @param entity 实体
    * @return Page<WmsGoodsBom>
    */
    public Page<WmsGoodsBom> baseSelectPage(WmsGoodsBom entity ){
        PageHelper.startPage(entity.getPage(),entity.getRows());
        return (Page<WmsGoodsBom>)dao.baseSelectPage( entity );
    }

   /**
    * 查询（根据主键ID查询）
    * @param sshpid 所属货品ID
    * @return WmsGoodsBom
    */
    public List<WmsGoodsBom> baseSelectByPrimaryKey( String sshpid ){
         return dao.baseSelectByPrimaryKey(sshpid);
    }

   /**
    * 查询（根据ID 批量查询）
    * @param idList 主键ID列表
    * @return list
    */
    public Integer baseSelectBathPrimaryKeys( List<WmsGoodsBom> idList ){
         return dao.baseSelectBathPrimaryKeys( idList );
    }

   /**
    *修改 （匹配有值的字段）
    * @param list 实体集合
    * @return int
    */
   @BaseServiceDescribe(moduleName = "编辑货品物料清单信息",btnName = "编辑货品物料清单信息")
   @Transactional
    public void baseUpdateByPrimaryKeySelective(List<WmsGoodsBom> list)throws ServiceException{
        int d=dao.baseDeleteByPrimaryKey(list.get(0).getSshpid());
        if(d>0){
            for(WmsGoodsBom bom:list){
                bom.setId(UUIDUtils.uuid());
                dao.baseInsert(bom);
            }
        }else{
            throw new ServiceException("此货品无货品物料清单信息，不能编辑");
        }

         //return
    }

   /**
    *修改（根据主键ID修改）
    * @param entity 主键ID列表
    * @return int
    */
    public Integer baseUpdateByPrimaryKey( WmsGoodsBom entity){
         return dao.baseUpdateByPrimaryKey( entity);
    }
}
